;
(function($) {
	$.fn.extend({
		initForm : function(options) {
			// 默认参数
			var defaults = {
				jsonValue : options,
				isDebug : false
			// 是否需要调试，这个用于开发阶段，发布阶段请将设置为false，默认为false,true将会把name value打印出来
			}

			// 设置参数
			var setting = defaults;
			var form = this;
			jsonValue = setting.jsonValue;
			// 如果传入的json字符串，将转为json对象
			if ($.type(setting.jsonValue) === "string") {
				jsonValue = $.parseJSON(jsonValue);
			}
			
			form.find(":input[type='text']").each(function() {
				if ($(this).data("rule")!= null && $(this).data("rule").indexOf("required")!=-1) {
					$(this).parent("div").addClass("required");
				}
			});
			
			//率先执行表单结构初始化
			form.find("select").each(function() {
				
				if ($(this).data("rule")!=null && $(this).data("rule").indexOf("required")!=-1) {
					$(this).parent("div").parent("div").addClass("required");
				}
				
				/*if ($(this).data("url")&&$(this).data("url").indexOf("dict")==0) {
					$.fixedDict.baseurl = $(this).data("url").split(":")[1] + '/fixedDict/'
					var selectdata = $.fixedDict.get($(this).data("url").split(":")[2]);
					var select = $(this);
					for(var i = 0; i < selectdata.length; i++){
						select.append("<option value='"+selectdata[i].value+"'>"+selectdata[i].name+"</option>");
					}
					select.selectpicker('refresh');
				}*/
				
			});
			//
			$.fixedDict.setOption();
			
			
			// 如果传入的json对象为空，则不做任何操作
			if (!$.isEmptyObject(jsonValue)) {
				var debugInfo = "";
				$.each(jsonValue,
						function(key, value) {
							// 是否开启调试，开启将会把name value打印出来
							if (setting.isDebug) {
								alert("name:" + key + "; value:" + value);
								debugInfo += "name:" + key + "; value:" + value
										+ " || ";
							}
							var formField = form.find("[name='" + key + "']");
							if ($.type(formField[0]) === "undefined") {
								if (setting.isDebug) {
									alert("can not find name:[" + key
											+ "] in form!!!"); // 没找到指定name的表单
								}
							} else {
								var fieldTagName = formField[0].tagName
										.toLowerCase();
								if (fieldTagName == "input") {
									if (formField.attr("type") == "radio") {
										$(
												"input:radio[name='" + key
														+ "'][value='" + value
														+ "']").attr("checked",
												"checked");
									} else {
										formField.val(value);
									}
								} else if (fieldTagName == "select") {

									// do something special
									formField.val(value);
									formField.selectpicker('refresh');
								} else if (fieldTagName == "textarea") {
									// do something special
									formField.val(value);
								} else {

									formField.val(value);
								}
							}
						});

				if (setting.isDebug) {
					alert(debugInfo);
				}
				
				 if(jsonValue != null && jsonValue.hasOwnProperty('editStatus') && jsonValue.editStatus == 'view'){
				 		$("input[type=text]").attr("disabled","disabled");
				 		$('.selectpicker').prop('disabled', true);
				 		$('.selectpicker').selectpicker('refresh');
				 		$("button[type=submit]").hide();  
				 }
			}
			
			
			return form; // 返回对象，提供链式操作
		}
	});

	$.fn.serializeJsonObject = function() {
		var json = {};
		var form = this.serializeArray();
		$.each(form, function() {
			if (json[this.name]) {
				if (!json[this.name].push) {
					json[this.name] = [ json[this.name] ];
				}
				json[this.name].push();
			} else {
				json[this.name] = this.value || '';
			}
		});
		return json;
	}
})(jQuery);
